package modele;

import java.text.CollationKey;
import java.text.Collator;
import java.util.Locale;
import java.util.UUID;

/**
 * Base pour tous modèles
 * @author phil
 */
public class ObjetSimple implements Comparable<ObjetSimple> {
	/**
     * ID de l'objet
     */
    private UUID id;
	
	/**
	 * Nom de l'objet
	 */
	protected String nom = "";
	
	/**
	 * Lien Manga news
	 */
	protected String url = "";
    
    /**
     * Collator courant
     */
    protected Collator collator = Collator.getInstance(Locale.CANADA_FRENCH);
    
    /**
     * Clé de comparaison
     */
    protected CollationKey key;
    
    /**
     * Crée un nouvel objet, donc nouveau ID
     */
    public ObjetSimple() {
        this.id = UUID.randomUUID();
        this.nom = "";
        this.init();
    }
    
    /**
     * Crée un objet existant, garde l'id
     * @param id 
     */
    public ObjetSimple(UUID id) {
        this.id = id;
        this.nom = "";
        this.init();
    }
    
    /**
     * Crée un objet existant, garde l'id
     * @param id 
     */
    public ObjetSimple(UUID id, String nom) {
        this.id = id;
        this.nom = nom;
        this.init();
    }
    
    /**
     * Initialise l'objet
     */
    public void init() {
    	this.key = collator.getCollationKey(this.nom);
    }
    
    /**
     * Getter de l'ID
     * @return L'ID de l'objet
     */
    public UUID getId() {
        return this.id;
    }
	
    /**
     * Setter nom
     * @return String Nom de l'objet
     */
	public String getNom() {
		return this.nom;
	}
	
	/**
	 * Setter nom
	 * @param nom String Nom de l'objet
	 */
	public void setNom(String nom) {
		this.nom = nom;
	}
	
	public String getUrl() {
		return this.url;
	}
	
	public void setUrl(String url) {
		this.url = url;
	}
    
    /**
     * Ajout du toString
     * @return Le nom de l'objet
     */
    @Override
    public String toString() {
        return this.getNom();
    }

    /**
     * Compare 2 objets
     */
	public int compareTo(ObjetSimple b) {
		return this.key.compareTo(b.key);
	}
}
